/**
 * Enum for Ship
 * @author CodeTraders
 * @Version 1.0 11/18/2012
 */
public enum Ships {
	
	/*
	FLEA(10,0,0,0,1,20,4,1,2000,5,2,25,-1,-1,0,1,0), 
	GNAT(15,1,0,1,1,14,5,2,10000,50,28,100,0,0,0,1,1), 
	FIREFLY(20,1,1,1,1,17,5,3,25000,75,20,100,0,0,0,1,1), 
	MOSQUITO(15,2,1,1,1,13,5,5,30000,100,20,100,0,1,0,1,1), 
	BUMBLEBEE(25,1,2,2,2,15,5,7,60000,125,15,100,0,1,0,1,2);
	*/
	
	FLEA, GNAT, FIREFLY, MOSQUITO, BUMBLEBEE;
	
	/**
	 * maximum cargo space value
	 */
	private final int maxCargoSpace;
	
	/**
	 * default values for the Ships
	 */
	private final int weaponSlots, shieldSlots,
	gadgetSlots, maxCrew, maxFuel, fuelCost, price;
	
	/**
	 * default values for the Ships
	 */
	private final int bounty, occurrence, hullStrength,
	police, pirate, trader, repairCost, size;
	
	/**
	 * minimum required tech level for the Ships
	 */
	private final Tech minTechLevel;

	/*
	 * Constructor for Ships
	 * 
	 * @param cb Cargo Bay
	 * @param ws Weapon Slots
	 * @param ss Shield Slots
	 * @param gs Gadget Slots
	 * @param mc Max Crew
	 * @param mf Max Fuel
	 * @param mtl Minimum Tech Level
	 * @param fc Fuel Cost
	 * @param p Price
	 * @param b Bounty
	 * @param o Occurrence
	 * @param hs Hull Strength
	 * @param police Police
	 * @param pirate Pirate
	 * @param trader Trader
	 * @param rc Repair Cost
	 * @param s Size
	 */
//	private Ships(int cb, int ws, int ss, int gs, int mc,
//			int mf, int mtl, int fc, int p, int b, int o,
//			int hs, int police, int pirate, int trader,
//			int rc, int s) {
	/**
	 * Constructor for Ships
	 */
	private Ships() {
		if (this.ordinal() == 0) {
			this.maxCargoSpace = Numbers.TEN.getNumber();
			this.weaponSlots = 0;
			this.shieldSlots = 0;
			this.gadgetSlots = 0;
			this.maxCrew = 1;
			this.maxFuel = Numbers.TWENTY.getNumber();
			this.minTechLevel = Tech.values()[Numbers.FOUR.getNumber()];
			this.fuelCost = 1;
			this.price = Numbers.THOUSAND.getNumber();
			this.bounty = Numbers.FIVE.getNumber();
			this.occurrence = Numbers.TWO.getNumber();
			this.hullStrength = Numbers.TWENTY_FIVE.getNumber();
			this.police = -1;
			this.pirate = -1;
			this.trader = 0;
			this.repairCost = 1;
			this.size = 0;
		} else if (this.ordinal() == 1) {
			this.maxCargoSpace = Numbers.TEN.getNumber() + Numbers.FIVE.getNumber();
			this.weaponSlots = 1;
			this.shieldSlots = 0;
			this.gadgetSlots = 1;
			this.maxCrew = 1;
			this.maxFuel = Numbers.TEN.getNumber() + Numbers.FOUR.getNumber();
			this.minTechLevel = Tech.values()[Numbers.FIVE.getNumber()];
			this.fuelCost = Numbers.TWO.getNumber();
			this.price = Numbers.TEN_THOUSAND.getNumber();
			this.bounty = Numbers.FIFTY.getNumber();
			this.occurrence = Numbers.TWENTY_FIVE.getNumber() + Numbers.THREE.getNumber();
			this.hullStrength = Numbers.HUNDRED.getNumber();
			this.police = 0;
			this.pirate = 0;
			this.trader = 0;
			this.repairCost = 1;
			this.size = 1;
		} else if (this.ordinal() == Numbers.TWO.getNumber()) {
			this.maxCargoSpace = Numbers.TWENTY.getNumber();
			this.weaponSlots = 1;
			this.shieldSlots = 1;
			this.gadgetSlots = 1;
			this.maxCrew = 1;
			this.maxFuel = Numbers.TEN.getNumber() + Numbers.SEVEN.getNumber();
			this.minTechLevel = Tech.values()[Numbers.FIVE.getNumber()];
			this.fuelCost = Numbers.THREE.getNumber();
			this.price = Numbers.THIRTY_THOUSAND.getNumber()
					- Numbers.FIVE_THOUSAND.getNumber();
			this.bounty = Numbers.SEVENTY.getNumber() + Numbers.FIVE.getNumber();
			this.occurrence = Numbers.TWENTY.getNumber();
			this.hullStrength = Numbers.HUNDRED.getNumber();
			this.police = 0;
			this.pirate = 0;
			this.trader = 0;
			this.repairCost = 1;
			this.size = 1;
		} else if (this.ordinal() == Numbers.THREE.getNumber()) {
			this.maxCargoSpace = Numbers.TEN.getNumber() + Numbers.FIVE.getNumber();
			this.weaponSlots = Numbers.TWO.getNumber();
			this.shieldSlots = 1;
			this.gadgetSlots = 1;
			this.maxCrew = 1;
			this.maxFuel = Numbers.TEN.getNumber() + Numbers.THREE.getNumber();
			this.minTechLevel = Tech.values()[Numbers.FIVE.getNumber()];
			this.fuelCost = Numbers.FIVE.getNumber();
			this.price = Numbers.THIRTY_THOUSAND.getNumber();
			this.bounty = Numbers.HUNDRED.getNumber();
			this.occurrence = Numbers.TWENTY.getNumber();
			this.hullStrength = Numbers.HUNDRED.getNumber();
			this.police = 0;
			this.pirate = 1;
			this.trader = 0;
			this.repairCost = 1;
			this.size = 1;
		} else {
			this.maxCargoSpace = Numbers.TWENTY_FIVE.getNumber();
			this.weaponSlots = 1;
			this.shieldSlots = Numbers.TWO.getNumber();
			this.gadgetSlots = Numbers.TWO.getNumber();
			this.maxCrew = Numbers.TWO.getNumber();
			this.maxFuel = Numbers.TEN.getNumber() + Numbers.FIVE.getNumber();
			this.minTechLevel = Tech.values()[Numbers.FIVE.getNumber()];
			this.fuelCost = Numbers.SEVEN.getNumber();
			this.price = Numbers.SIX_HUNDRED.getNumber() * Numbers.HUNDRED.getNumber();
			this.bounty = Numbers.HUNDRED.getNumber() + Numbers.TWENTY_FIVE.getNumber();
			this.occurrence = Numbers.TEN.getNumber() + Numbers.FIVE.getNumber();
			this.hullStrength = Numbers.HUNDRED.getNumber();
			this.police = 0;
			this.pirate = 1;
			this.trader = 0;
			this.repairCost = 1;
			this.size = Numbers.TWO.getNumber();
		}
		/*
		this.maxCargoSpace = cb;
		this.weaponSlots = ws;
		this.shieldSlots = ss;
		this.gadgetSlots = gs;
		this.maxCrew = mc;
		this.maxFuel = mf;
		this.minTechLevel = Tech.values()[mtl];
		this.fuelCost = fc;
		this.price = p;
		this.bounty = b;
		this.occurrence = o;
		this.hullStrength = hs;
		this.police = police;
		this.pirate = pirate;
		this.trader = trader;
		this.repairCost = rc;
		this.size = s;
		*/
	}
	
	/**
	 * Getter for the maximum cargo space
	 * 
	 * @return the maximum cargo space
	 */
	public int getMaxCargoSpace() {
		return maxCargoSpace;
	}
	
	/**
	 * to get max fuel
	 * @return max fuel
	 */
	public int getMaxFuel() {
		return maxFuel;
	}
	
	/**
	 * to get the hullStrength
	 * @return hullStrength
	 */
	public int getHullStrength() {
		return hullStrength;
	}
	
	/**
	 * to get the weaponSlots
	 * @return weaponSlots
	 */
	public int getWeaponSlots() {
		return weaponSlots;
	}
	
	/**
	 * to get the shieldSlots
	 * @return shieldSlots
	 */
	public int getShieldSlots() {
		return shieldSlots;
	}
	
	/**
	 * to get the GadgetSlots
	 * @return gadgetSlots
	 */
	public int getGadgetSlots() {
		return gadgetSlots;
	}
	
	/**
	 * to get the maxCrew
	 * @return maxCrew
	 */
	public int getMaxCrew() {
		return maxCrew;
	}
	
	/**
	 * to get the FuelCost
	 * @return fuelCost
	 */
	public int getFuelCost() {
		return fuelCost;
	}
	
	/**
	 * to get the price
	 * @return price
	 */
	public int getPrice() {
		return price;
	}
	
	/**
	 * to get the Bounty
	 * @return Bounty
	 */
	public int getBounty() {
		return bounty;
	}
	
	/**
	 * to get the Occurrence
	 * @return Occurrence
	 */
	public int getOccurrence() {
		return occurrence;
	}
	
	/**
	 * to get the police
	 * @return police
	 */
	public int getPolice() {
		return police;
	}
	
	/**
	 * to get the pirate
	 * @return pirate
	 */
	public int getPirate() {
		return pirate;
	}
	
	/**
	 * to get the trader
	 * @return trader
	 */
	public int getTrader() {
		return trader;
	}
	
	/**
	 * to get the repair cost
	 * @return repairCost
	 */
	public int getRepairCost() {
		return repairCost;
	}
	
	/**
	 * to get the size
	 * @return size
	 */
	public int getSize() {
		return size;
	}
	
	/**
	 * to get the minTechLevel
	 * @return minTechLevel
	 */
	public Tech getMinTechLevel() {
		return minTechLevel;
	}

}
